﻿namespace DGen
{
    #region HandlingOfColumnNames enum

    /// <summary>
    /// different levels of column mangling
    /// </summary>
    public enum HandlingOfColumnNames
    {
        /// <summary>
        /// Don't transform columns.
        /// </summary>
        NoChanges,
        /// <summary>
        /// Turns Column Name A into [Column Name A]
        /// </summary>
        JustAddQuotes,
        /// <summary>
        /// Removes spaces and all special characters.
        /// </summary>
        Standard
    }

    #endregion

    /// <summary>
    /// Affects the output of SQL Statements. T-SQL compatiable with SQL Server 2005/2008 is default.
    /// Not all variants are fully supported.
    /// </summary>
    public enum SQLVariant
    {
        /// <summary>
        /// By TSql this is referring to MS SQL Server compataible with SQL Server 2005. Most of it will work with Sybase Anywhere except some of the more specific DDL statements.
        /// </summary>
        TSql,
        /// <summary>
        /// For interacting with internal database and SQLite generally.
        /// </summary>
        Sqlite,
        /// <summary>
        /// Target platform here is IDS 11.2
        /// </summary>
        Informix,
        /// <summary>
        /// Most of the statements are aimed broadly at ANSI92 compliant systems.
        /// </summary>
        ANSI,
        /// <summary>
        /// Sql Anywhere 9.02
        /// </summary>
        SqlAnywhere,
        /// <summary>
        /// MS Access 2003
        /// </summary>
        MSAccess
    }
    /// <summary>
    /// bastardised version of sql datatypes used throughout tab2sql. 
    /// </summary>
    public enum DataTypes
    {
        /// <summary>
        /// unknown = default
        /// </summary>
        unknown,
        /// <summary>
        /// Sql NULL
        /// </summary>
        NULL,
        /// <summary>
        /// datetime = date (duh)
        /// </summary>
        datetime,
        /// <summary>
        /// integer = whole number
        /// </summary>
        integer,
        /// <summary>
        /// bigint = whole number over one trillion
        /// </summary>
        bigint,
        /// <summary>
        /// numeric = non-whole number
        /// </summary>
        numeric,
        /// <summary>
        /// numeric = non-whole number in 3.5e-09 blah format.
        /// </summary>
        numericScientific,
        /// <summary>
        /// percentage - number with % in it less than 1 in most cases.
        /// </summary>
        percentage,
        /// <summary>
        /// varchar = string/text of any kind (defacto default)
        /// </summary>
        varchar
    }

    /// <summary>
    /// Is the desired output a collection of INSERTS or one insert with a x UNION ALL y UNION ALL ...etc structure?
    /// </summary>
    public enum SqlStatementType
    {
        /// <summary>
        /// One insert per row
        /// </summary>
        Standard,
        /// <summary>
        /// Several inserts per row. Size of each batch controlled in batch size option/setting.
        /// </summary>
        MultiInsert
    }


}